makefile(五):makefile的条件判断与循环

您所在的位置:网站首页 makefile 判断变量为空 makefile(五):makefile的条件判断与循环

makefile(五):makefile的条件判断与循环

2024-07-12 08:48| 来源: 网络整理| 查看: 265

如果说任何程序都可以由顺序,分支,循环来组成的话,前面介绍的相当于顺序部分,本部分介绍分支和循环 makefile的条件判断和循环非常简单。

一.条件判断

条件判断的语法如下:

ifeq (条件表达式) 运行体 endif ifeq (条件表达式) 运行体 else 运行体 endif

解释:如果条件表达式的返回值为真,则运行下面的运行体,否则运行else后面的运行体,每一个条件表达式都必须以endif作为结尾 条件表达式可以写成如下的形式

`ifeq (ARG1, ARG2)' `ifeq 'ARG1' 'ARG2'' `ifeq "ARG1" "ARG2"' `ifeq "ARG1" 'ARG2'' `ifeq 'ARG1' "ARG2"'

除了ifeq以外,还有ifneq,格式同ifeq相同,他表示的意思与ifeq相同,不在赘述。 除了判断两个参数是否相等以外,还可以通过ifdef来判断一个变量是否有值如下:

ifdef 变量名 运行体 endif

同样它也可以使用带else的形式,格式如ifeq和ifneq 他表示的意思是:如果变量有值,那么就运行相应的运行体。 举例如下:

ifdef wanbiao name=wan else name=biao endif

这个例子的意思是:当wanbiao这个变量有值得时候,则name变量的值被赋值为wan,否则被赋值为biao 这里需要注意一下:当wanbiao这个变量的值是一个引用值,在判断的时候,并不会被展开如下:

firstname= wanbiao=$(firstname) ifdef wanbiao name=wan else name=biao endif

这个的结果将是 name的值为wan,尽管firstname的值为空, 且wanbiao的值为空。但是ifdef只判断最浅层是否有赋值。当wanbiao=$(firstname)时,wanbiao被判定为已经赋值,即值为$(firstname),因此为true

二.循环

使用循环可以有两种方法:1.shell里面的循环2.直接使用makefile里面的循环函数 因为makefile里面可使用shell命令因此,shell里面的循环也可以书写在make里面,shell里面的循环书写,可以参考前面关于shell的介绍。这里介绍makefile里面专门用于循环的函数。 makefile里面没有明确的关于循环的语法。但是可以使用循环函数foreach,达到循环的目的 foreach函数如下。

$(foreach VAR,LIST,TEXT)

将LIST里面的值依次赋值给VAR,然后再运行TEXT里面的内容。 返回值: 空格分割的多个表达式“ TEXT”的计算的结果 举例如下

dirs := a b c d files := $(foreach dir,$(dirs),$(wildcard $(dir)/*))

分别取出$(dirs)的值赋值给dir,然后运行后面的,并将结果返回给files,因此files的值为

a/* b/* c/* d/*


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3